/**
 * 节流函数
 * 节流是一种优化高频率执行代码的方法，它可以让一个函数在一定时间间隔内只执行一次。
 * 这个时间间隔可以通过参数来指定，默认为 200 毫秒。
 * 当函数被调用时，如果在时间间隔内已经执行过一次了，那么就会被忽略，直到时间间隔过去后才能再次执行。
 * 这样可以避免一些高频率触发的事件导致页面卡顿或者浏览器崩溃的问题。
 * 
 * @param {Function} fn - 需要节流的函数
 * @param {Number} delay - 节流时间间隔，默认为 200ms
 * @returns {Function} - 节流后的函数
 */
function throttle(fn, delay = 200) {
    let flag = true
    return function () {
        if (!flag) return
        flag = false
        const args = arguments
        setTimeout(() => {
            fn.apply(this, args)
            flag = true
        }, delay)
    }
}
